home *** CD-ROM | disk | FTP | other *** search
- C
- C ..................................................................
- C
- C SUBROUTINE DGT3
- C
- C PURPOSE
- C TO COMPUTE A VECTOR OF DERIVATIVE VALUES GIVEN VECTORS OF
- C ARGUMENT VALUES AND CORRESPONDING FUNCTION VALUES.
- C
- C USAGE
- C CALL DGT3(X,Y,Z,NDIM,IER)
- C
- C DESCRIPTION OF PARAMETERS
- C X - GIVEN VECTOR OF ARGUMENT VALUES (DIMENSION NDIM)
- C Y - GIVEN VECTOR OF FUNCTION VALUES CORRESPONDING TO X
- C (DIMENSION NDIM)
- C Z - RESULTING VECTOR OF DERIVATIVE VALUES (DIMENSION
- C NDIM)
- C NDIM - DIMENSION OF VECTORS X,Y AND Z
- C IER - RESULTING ERROR PARAMETER
- C IER = -1 - NDIM IS LESS THAN 3
- C IER = 0 - NO ERROR
- C IER POSITIVE - X(IER) = X(IER-1) OR X(IER) =
- C X(IER-2)
- C
- C REMARKS
- C (1) IF IER = -1,2,3, THEN THERE IS NO COMPUTATION.
- C (2) IF IER = 4,...,N, THEN THE DERIVATIVE VALUES Z(1)
- C ,..., Z(IER-1) HAVE BEEN COMPUTED.
- C (3) Z CAN HAVE THE SAME STORAGE ALLOCATION AS X OR Y. IF
- C X OR Y IS DISTINCT FROM Z, THEN IT IS NOT DESTROYED.
- C
- C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
- C NONE
- C
- C METHOD
- C EXCEPT AT THE ENDPOINTS X(1) AND X(NDIM), Z(I) IS THE
- C DERIVATIVE AT X(I) OF THE LAGRANGIAN INTERPOLATION
- C POLYNOMIAL OF DEGREE 2 RELEVANT TO THE 3 SUCCESSIVE POINTS
- C (X(I+K),Y(I+K)) K = -1,0,1. (SEE HILDEBRAND, F.B.,
- C INTRODUCTION TO NUMERICAL ANALYSIS, MC GRAW-HILL, NEW YORK/
- C TORONTO/LONDON, 1956, PP. 64-68.)
- C
- C ..................................................................
- C
- SUBROUTINE DGT3(X,Y,Z,NDIM,IER)
- C
- C
- DIMENSION X(1),Y(1),Z(1)
- C
- C TEST OF DIMENSION AND ERROR EXIT IN CASE NDIM IS LESS THAN 3
- IER=-1
- IF(NDIM-3)8,1,1
- C
- C PREPARE DIFFERENTIATION LOOP
- 1 A=X(1)
- B=Y(1)
- I=2
- DY2=X(2)-A
- IF(DY2)2,9,2
- 2 DY2=(Y(2)-B)/DY2
- C
- C START DIFFERENTIATION LOOP
- DO 6 I=3,NDIM
- A=X(I)-A
- IF(A)3,9,3
- 3 A=(Y(I)-B)/A
- B=X(I)-X(I-1)
- IF(B)4,9,4
- 4 DY1=DY2
- DY2=(Y(I)-Y(I-1))/B
- DY3=A
- A=X(I-1)
- B=Y(I-1)
- IF(I-3)5,5,6
- 5 Z(1)=DY1+DY3-DY2
- 6 Z(I-1)=DY1+DY2-DY3
- C END DIFFERENTIATION LOOP
- C
- C NORMAL EXIT
- IER=0
- I=NDIM
- 7 Z(I)=DY2+DY3-DY1
- 8 RETURN
- C
- C ERROR EXIT IN CASE OF IDENTICAL ARGUMENTS
- 9 IER=I
- I=I-1
- IF(I-2)8,8,7
- END